package com.sisgesbyte.web.managedBean.sistema;

import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;

import javax.annotation.PostConstruct;
import javax.ejb.EJB;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;

import com.sisgesbyte.common.ConstantesInternasSistema;
import com.sisgesbyte.services.sistema.MenuSistema;
import com.sisgesbyte.services.sistema.bean.ListaModuloResponse;
import com.sisgesbyte.services.sistema.bean.ModuloBean;
import com.sisgesbyte.web.managedBean.seguridad.TablaRestriccionesMBean;

@ManagedBean
@SessionScoped
public class MenuMBean implements Serializable{

	private static final long serialVersionUID = 1L;
	
	@EJB
	private MenuSistema menuSistema;
	
	private List<ModuloBean> lsMenuBeanSistema;
	private List<ModuloBean> lsMenuBeanNegocio;
	public  int count = 0;
	
	@PostConstruct
	public void init(){
		System.out.println("ingresaaa");
		if(count<1){
			cargarLista();
		}
		count++;
	}
	
	public List<ModuloBean> getLsMenuBeanSistema() {
		return lsMenuBeanSistema;
	}
	public void setLsMenuBeanSistema(List<ModuloBean> lsMenuBeanSistema) {
		this.lsMenuBeanSistema = lsMenuBeanSistema;
	}
	public List<ModuloBean> getLsMenuBeanNegocio() {
		return lsMenuBeanNegocio;
	}
	public void setLsMenuBeanNegocio(List<ModuloBean> lsMenuBeanNegocio) {
		this.lsMenuBeanNegocio = lsMenuBeanNegocio;
	}
	
	public void cargarLista(){
		
		ExternalContext contexto = FacesContext.getCurrentInstance().getExternalContext();
		ListaModuloResponse listaMenuResponse = null;
		List<ModuloBean> lsMenuSistema = new ArrayList<ModuloBean>();
		List<ModuloBean> lsMenuNegocio = new ArrayList<ModuloBean>();
		
		try{
			TablaRestriccionesMBean restriccionesMBean = (TablaRestriccionesMBean) contexto.getSessionMap().get("tablaRestriccionesMBean");
			
			try{

				listaMenuResponse = menuSistema.listarMenuSistema(restriccionesMBean.getCodTransaccion(), restriccionesMBean.getCodigoRol());
			}catch(Exception e){
				System.out.println("Error al invocar el servicio : menuSistema.listarMenuSistema");
			}		
			
			if(Integer.valueOf(listaMenuResponse.getCodigoRespuesta()) == Integer.valueOf(ConstantesInternasSistema.CODIGO_EXITO)){
				
				for(ModuloBean ls :listaMenuResponse.getMenu()){
					
					if(ls.getTipo()==Integer.valueOf(ConstantesInternasSistema.MENU_SISTEMA)){
						lsMenuSistema.add(ls);
					}
					if(ls.getTipo()==Integer.valueOf(ConstantesInternasSistema.MENU_NEGOCIO)){
						lsMenuNegocio.add(ls);
					}
					
				}
				setLsMenuBeanSistema(lsMenuSistema);
				setLsMenuBeanNegocio(lsMenuNegocio);

			}
			
		}catch(Exception e){
			System.out.println("Error al cargar MBean  : " +e.getMessage());
		}
		
	}
	
	
}
